package com.demo.util;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import com.demo.entity.ConfigContent;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ReadConfig {
	
	public List<ConfigContent> readConfig(String path) throws BiffException, IOException{
		File xls = new File(path);			
		
			jxl.Workbook book = Workbook.getWorkbook(xls.getAbsoluteFile());
			Sheet configSheet = book.getSheet("配置信息");
			String[] configStr=new String[configSheet.getColumns()];
			getName(configStr, configSheet, 0);// 输入参数字段名
			
			
			List<ConfigContent> ConfigContentList=new ArrayList<ConfigContent>();
			int line = 1;
			String name = getItem(configSheet, "接口名", configStr, line);
			while (!name.equals("") && name != null) {
				ConfigContent configContent=new ConfigContent();
				String env = getItem(configSheet, "运行环境", configStr, line);
				String inPath = getItem(configSheet, "数据路径", configStr, line);
				String exeOrNot = getItem(configSheet, "是否执行", configStr, line);
				String interfaceGroup = getItem(configSheet, "接口组", configStr, line);
				//String outPath=getItem(configSheet, "输出路径", configStr, line);
				//String sheetName=getItem(configSheet, "对应工作表名", configStr, line);
				/***************************************/
				//操作
				configContent.setInterfaceName(name);
				configContent.setEnvironment(env);
				configContent.setExeOrNot(exeOrNot);
				configContent.setInPath(inPath);
				configContent.setInterfaceGroup(interfaceGroup);
				
				//configContent.setSheetName(sheetName);		
				ConfigContentList.add(configContent);
				/***************************************/
				name = getItem(configSheet, "接口名", configStr, ++line);
			}
			return ConfigContentList;		
		
	}
	
	/**
	 * 方法描述 : 取sheet页s中第line行的数据,赋值给字符串str
	 * 
	 * @输入参数 str指定的字符串,s驱动表中的页,line 行
	 * @输出参数
	 * @创建人及日期 : 2012/02/22 by 黄育莲
	 * @最后一次修改 :
	 */
	public void getName(String[] str, Sheet s, int line) {
		for (int i = 0; i < s.getColumns(); i++) {
			str[i] = s.getCell(i, line).getContents().toString();
		}
	}

	public int getOutputName(String[] str, Sheet s, String str1) {
		int outputLine = 2;
		String usecaseID = s.getCell(0, outputLine).getContents().toString();
		while (!usecaseID.equals(str1)) {
			usecaseID = s.getCell(0, ++outputLine).getContents().toString();
		}
		getName(str, s, outputLine);
		return outputLine;
	}

	public String getItem(Sheet s, String name, String[] str, int lineNum) {
		String re = s.getCell(getColumn(name, str), lineNum).getContents()
				.toString();
		System.out.println(name + ":" + re);
		return re;

	}

	/**
	 * 方法描述 : 获取一字符在数组中的下标, 以此函数来获取指定字段名在excel文件中所在的列数
	 * 
	 * @输入参数 str指定的字符,data数组
	 * @输出参数 int指定字符在数组中的下标
	 * @创建人及日期 : 2012/02/22 by 黄育莲
	 * @最后一次修改 :
	 */
	public int getColumn(String str, String[] data) {
		int column = 0;
		for (int i = 0; i < data.length; i++) {
			if (str.equals(data[i])) {
				column = i;
				break;
			}
		}
		return column;
	}

}
